对象的引用调用private类型函数的问题

深度解析:C++传引用能否访问private成员? 今天实现一个矩阵类,重载相加运算符,我是这样实现的:Matrix Matrix::operator+(const Matrix& B)const { if((row != B.row) || (col != B.col)) throw invalid_argument("The matrix should be matched"); Matrix& T 阅读详情

public class Test1{
 private void f(){
  System.out.println ("private f()");
 }
 public static void main (String[] args) {
  Test1 po=new Test1();
  po.f();
 }
}

疑问:为何在类Test1中,创建他本身的对象的时候,其对象的引用可以直接调用类Test1中的private方法?

public class Test2{
 
 public static void main (String[] args) {
  PrivateTest po=new PrivateTest();
  po.f();
 }
}
class PrivateTest{
 private void f(){
  System.out.println ("private f()");
 }
}

上述代码中类PrivateTest中的方法为private,故po.f()无法调用。

C++对象模型之绕过private权限修饰符 咱们都知道C++语言在创建类的时候data member(数据成员)和fuchtion member(函数成员),在访问权限上有3个分别是privateprotected和public,我们都知道声明为private的成员只能在类内部被使用,但是这是一定的吗?其实这个策略上有一个漏洞,要了解这个漏洞你要理解C++的对象模型,这篇文章只是给你演示怎么理解对象模型,绝不是教你学坏这种方法在实际开发中不可取!1、C++的内存模型是相对复杂的概念,如果你想了解原理又绕不过去。 阅读详情

相关推荐

【理解机器学习算法】之岭回归Ridge - L2 Rgularization

本人就职海外从事人工智能领域开发设计。 希望花时间总结下流行的机器学习算法,希望大家一起学习,欢迎指正!

Hyman Qiu 2317

c++类对象调用privated

类的成员变量分三种: public   protect  private   1、类的成员函数可以访问类这三类 2、继承类成员函数可以访问 protect  类型 3、只有本身类的成员函数才可以访问 private 类型 4、类的对象若在其他函数中是不可以访问类的 protect  private类型变量 类其实是个模型。 而对象就是找个这个模型制作的实体。

as14569852的博客 3061

使用nvm离线安装、管理node多版本以及配置环境变量(亲测)

使用nvm离线安装、管理node多版本以及配置环境变量(亲测)

JMHJAVA的专栏 1339

C++中public、protected、private的权限

1、public、protected、private修饰一个类中的成员函数或成员数据时 public:   可以被类的对象、类的成员函数、子类的成员函数、类的友元函数访问;protected:  可以被类的成员函数、子类的成员函数、类的友元函数访问,不能被类的对象访问;private:只可以被类的成员函数、类的友元函数访问,不能被类的对象访问; 2、public、protected

arrsonal的专栏 700

STM32H743玩转以太网:不用FreeRTOS,手把手搞定LAN8742和DHCP(附MPU配置避坑指南)

本文详细介绍了在STM32H743裸机环境下实现以太网通信的完整方案,重点讲解了LAN8742 PHY芯片的配置和DHCP自动获取IP的实现。通过CubeMX配置、内存布局优化和MPU设置,避开了H7系列常见的Cache陷阱,提供了无操作系统环境下的高效网络通信解决方案。

weixin_42709044的博客 201

osg3.6.5---osgEarth3.2 实现数字地球的加载

目前我在网上找得比较多的是osgearth2.10及以下的版本及加载数字地球的方法,但是我使用的是osg3.6.5和osgEarth3.。但是3.x版本和2.x版本差别很大,主要区别在于2.x有7个主要库,而3.x版本只有osgEarth这一个库。所以,特别记录一下。后面我讲他集成到qt的窗体在上传更新新的代码。1.直接上源码pro文件和cpp文件。

枫影竹韵的博客 1009

C#类(一):类和对象---private、protected、public

C#类(一):类和对象---private、protected、public

weixin_55721219的博客 7430

TSMC40nmLP版图实战:从Design Rule解读到Cadence高效布局布线

本文详细解析了TSMC40nmLP工艺的版图设计实战,从Design Rule解读到Cadence高效布局布线技巧。重点介绍了40nm工艺中的关键设计规则,如最小线宽、间距规则和深N阱规则,并分享了Cadence Virtuoso中的高效工作流和射频模块设计技巧,帮助工程师提升版图设计效率和质量。

weixin_29250403的博客 379

java中set和get方法的理解,写给初学者

对于JAVA初学者来说,set和get这两个方法似乎已经很熟悉了,这两个方法是JAVA变成中的基本用法,也是出现频率相当高的两个方法。 为了让JAVA初学者能更好的理解这两个方法的使用和意义,今天笔者来谈一下自己对这两个方法的理解,如果你对于这两个方法还有困惑甚至完全不知道这两个方法是做什么的,那你看下面这篇文章很有用。如果你对于set和get这两个方法已经很熟悉了,那么你完全不用看这篇文章

对半切开的奇异果 1万+

C# 开发 ACS 运动控制系统:从入门到高阶应用实践

起始位置</param>/// <param name="endPos">结束位置</param>/// <param name="maxVelocity">最大速度</param>/// <param name="maxAcceleration">最大加速度</param>/// <param name="maxJerk">最大加加速度

品质生活,极致编程。 2843

天地图下载带审图号(审图号: GS(2024)0650号)的 “行政区划” 数据(含shp文件下载地址)

在科研投稿论文过程中,多数期刊杂志要求我们制作涉及国界的图件,必须使用自然资源部地图技术审查中心发布的标准地图底图。如地理学报、地理科学等期刊的投稿指南中写到:非标准底图本刊不予发表!(如图1.1所示)如果一定要用,凡涉国界图件(国内部分地区、全国、世界部分地区、全球)必须使用自然资源部标准地图服务系统标准地图底图(http://bzdt.ch.mnr.gov.cn/)(如图1.1所示)或国家测绘局地理信息局标准地图底图(如图1.2所示),所用底图边界要完全无修改(包括南海诸岛位置)。

JData_Engineer的博客 2304

private成员函数竟然可以在类的外部调用

今天写代码竟然发现,private成员函数竟然可以在类的外部调用,开始以为是C++设计的缺陷。但是逐步深入才知道C++多态的博大精深。#include using namespace std; class Base { public: virtual void Func() { cout<<"base"<<endl; } }; class Derived : public Bas

OSKernelLAB(gatieme) 3万+

C++软件调试与异常排查从入门到精通专栏介绍与文章汇总

根据近几年排查软件异常的实践与经验,系统地讲解了C++软件异常常见原因与常用排查方法,以图文并茂的方式给出具体的分析实例,带领大家逐步掌握C++软件异常排查的相关技术与要领。

dvlinker的技术专栏 23万+

Effective c++item 19-24

/ a为局部变量,返回了一个无效地址// tworeturn *a;// 可能会造成内存泄漏// aka a = (b * c) * d, (b*c)的结果没有被保存下来A a(1, 8);A b(1, 2);// error!!!c = 2 * a;A a(1, 2);A b;b = a * 2;// 2 6。

weixin_44609676的博客 190

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C++面向对象——继承

继承指由已有类为基类(父类)进行继承出一个派生类(子类),实现类与类之间的复用,可以减少代码的冗余性,实现代码的重用,并且通过少量的修改,满足不断变化的具体应用要求,提高程序设计的灵活性。由已有类为基类(父类)进行继承出一个派生类(子类)。派生类由基类成员和派生类成员构成,基类负责定义在层次关系中所有类共同拥有的成员,派生类定义各自拥有的成员。继承可以分为单继承和多继承,单继承指派生类只有一个父类,多继承指派生类可以有多个父类。

trey的博客 251

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

c++_OOP_继承_随笔-1

C++ OOP部分学习的随笔记录

weixin_44320404的博客 112

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++中构造函数或析构函数定义为private

C++中构造函数或析构函数定义为private

xxxtlxxx的博客 2937

值传递与引用传递、匿名对象、private,thit关键字

值传递与引用传递 基本数据类型作为形式参数,形参的改变不影响实际参数,传递的是值本身。 引用类型作为形式参数,形参的改变影响实际参数,传递的是地址值。 匿名对象 匿名对象:没有名字的对象。 例如:new Person(); 是对象的一种简化表示形式 匿名对象的特点 如果对象只需要使用一次,可以使用匿名对象 。 匿名对象一旦使用完后自动释放,节约内存资源。 作为实际参数传递的时候比较方便。 priv...

Tang 510

条款11:优先选用删除函数,而非private未定义函数

摘要:C++条款11建议优先使用删除函数(=delete)而非private未定义函数来禁用特定操作。删除函数具有更明确的语义和更早的错误检测(编译期报错),且适用范围更广,包括非成员函数和模板实例化。案例分析表明,删除函数能有效禁止流对象拷贝、过滤无效函数参数类型,以及限制特定模板实例化的使用。相较而言,private未定义函数仅适用于成员函数,且错误可能在链接阶段才被发现,限制力度较弱。因此,删除函数是更优的选择。

大胡子的博客 2025

C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)

1. 类的定义 类定义是以关键字 class 开头,后跟类的名称。并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数, 以及结尾的分号。 类声明将类本身及其属性告诉编译器。类声明本身并不能改变程序的行为,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。 例如,我们使用关键字 class 定义 Box 数据类型,如下所示: class Box { // 成员属性 double length; // 盒子的长度 double breadth; // 盒

wohu1104的专栏 1400

c++的虚函数如果是private的,该如何实现多态

关于虚函数的回顾: 1) :虚函数的地址存放于虚函数表之中。运行期多态就是通过虚函数和虚函数表实现的。 2):类的对象内部会有指向类内部的虚表地址的指针。通过这个指针调用虚函数。 3):虚函数的调用会被编译器转换为对虚函数表的访问 。 当虚函数是public的,这个时候实现多态的方式: class Base { public: virtual...

breakpoints_的博客 1346

为什么基类指针(或引用)可以调用派生类的private虚函数

在基类中定义了public虚函数,在派生类中将其重写,但是设置为private,为什么通过基类指针仍然可以发生动态绑定调用派生类中的private虚函数? 例子如下: class Base { public: // public虚函数 virtual void Disp() { cout << "base.\n"; } }; class Derived : public B

逝无痕——kaidy 3574

C#利用类型引用改变private类型变量的值

今天研究As3中发现可以利用引用改变private关键字声明的变理,用C#试验了一下,发现也可以!拿出来跟大家分享一下!先看看代码: using System;using System.Collections.Generic;using System.Text;using System.IO;namespace file1...{    class Program    ...{ 

baozhenliang的专栏 3034

private和final的讲解以及一些例子

依据哈工大软件构造lab2的棋牌游戏对private和final的讲解

weixin_45842420的博客 4525

Java-面向对象构造函数 -(private private)关键字

面向对象构造函数 在定义构造方法时,(构造方法没有返回值,构造方法并不需要使用 void 关键字进行修饰的!) 构造函数必须和类同名,她和一般函数不一样。 构造函数命名不同:构造函数命名是以类来命名的,而且一般函数命名是自定义的。 在运行也不同:构造函数是在对对象建立就运行了,给对象初始的。 而一般函数是对象调用才行的 ,给是对象添加具备的功能。 (一个对象建立,构造函数只运行一次

无痕公子的博客 2434

private class java_Java_为什么说private是对类的不是对对象的

今天,我在中国大学MOOC上学习浙江大学翁恺老师的Java课程的时候,翁恺老师在讲解对象交互中成员属性这一部分时,是这样描述private的访问属性的。(图1)图1.Java类中privare的访问属性private1) 只有这个类内部可以访问2) 类内部指类的成员函数和定义初始化3) 这个限制是对类的而不是对对象的翁恺老师在课后讨论中给我们留下了这样的一个问题。图2.中国大学MOOC 面...

weixin_39918043的博客 980
上一篇: Java的包访问权限(friendly)
下一篇: java备忘001
zi_jun
博客等级 码龄18年 109粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值