文档章节

c++拷贝构造函数可以访问私有成员

startstorm
 startstorm
发布于 2017/02/27 11:21
字数 344
阅读 44
收藏 0

在学习拷贝构造函数的时候,突然发现拷贝构造函数里面可以访问私有成员。当时很疑惑,和c++类的private私有属性不同。但是编译器可以编译通过。

class  MyString
{
public:
	MyString(int len = 0);
	MyString(const MyString& s);
	~MyString();
private:
	int	m_len;
};
MyString::MyString(const MyString& s)
{
	m_len = s.m_len;
	m_p = new char[m_len + 1];
	strcpy(m_p, s.m_p);
}

引用C++标准原文
A member of a class can be
— private; that is, its name can be used only by members and friends of the class in which it is
declared.
— protected; that is, its name can be used only by members and friends of the class in which it is
declared, and by members and friends of classes derived from this class (see 11.5).
— public; that is, its name can be used anywhere without access restriction.

访问限制标号是针对类而不是针对一个类的不同对象,只要同属一个类就可以不用区分同一个类的不同对象。因为 是类的成员函数,所以有权限访问私有数据成员。如果是在main函数中直接,那肯定就会报错了,不能访问,因为这是在类外不能访问私有数据成员。一个类的成员函数可以访问这个类的私有数据成员,我们要理解这个对类的访问限制,而不是针对对象。

参考:http://http://blog.csdn.net/peng314899581/article/details/51895998

© 著作权归作者所有

共有 人打赏支持
startstorm
粉丝 6
博文 53
码字总数 21034
作品 0
浦东
程序员
C++11 中值得关注的几大变化

源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里。所以,我就不翻译了,我在这里仅对文中提到的这些变...

雅各宾
2014/01/17
0
0
c语言基础学习11_项目实战:IDE(集成开发环境)

============================================================================= ============================================================================= 涉及到的知识点有: 一......

黑泽明军
01/29
0
0
复习C++基础知识-----“我的第一本C++”读书笔记1

Debug : 在单独运行时,往往需要编译器提供一些库文件 Release : 可以在没有安装visual c++的computer上正常运行 常规设置 1) 在共享DLL中使用MFC : 表示把程序中用到的MFC类库作为动态链接库...

OScoder2
2014/04/08
0
0
const成员函数,内联函数,友元函数,static成员

1.const成员函数 2.内联函数 3.友元 4.static成员 5.N中构造拷贝构造的优化 1.const成员函数 const修饰成员函数 在成员函数后面加const,const修饰this指针所指向的对象,也就是保证调用这个...

qq_38646470
04/02
0
0
6-C++远征之封装篇[上]-学习笔记

C++远征之封装篇(上) 课程简介 类(抽象概念),对象(真实具体) 配角: 数据成员和成员函数(构成了精彩而完整的类) 构造函数 & 析构函数(描述了对象的生生死死) 对象复制和对象赋值 (使...

天涯明月笙
07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

RESTful架构详解

1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主...

kitty1116
12分钟前
0
0
精通Spring Boot——第十篇:Quartz动态配置定时任务

定时任务简述 定时任务,在企业开发中尤其重要,很多业务都是需要定时任务去做的。比如说10点开售某件东西,凌晨0点统计注册人数,统计其他各种等等。这个时候不可能说让人为的去开启某个开关...

developlee的潇洒人生
14分钟前
0
0
将一些内容输出到文件中

看到一个面试题,如下: 第八题: 一个字符串将其输入到一个文件中,代码如下: <?php$a = '[{"teamId": "43", "serial": "1"},{"teamId": "1", "serial": "2"},{"teamId": "14", "serial":...

vinci321
23分钟前
0
0
nginx的简单使用:负载均衡

nginx:反向代理的服务器;用户发送请求到nginx,nginx把请求发送给真正的服务器,等待服务器处理完数据并返回,再把数据发送给用户。 nginx作为一个反向代理服务器,能缓存我们项目的静态文...

osliang
今天
2
0
网站title标题被改并被百度网址安全中心提醒的解决办法

国庆假日期间我们Sine安全接到众多网站站长求助网站标题被改导致在百度搜索中百度安全中心提醒被拦截,导致网站正常用户无法浏览网站被跳转到一些菠菜du博网站,而且很明显的一个特征就是在百...

网站安全
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部