c++ 类和对象-【C++】写在构造函数里的变量能够被同一个类中其他成员访问吗?为什么?

问题描述

【C++】写在构造函数里的变量能够被同一个类中其他成员访问吗?为什么?

class rational
{
private:
long denom,den; //denom为分子,den为分母
double a;
public:
rational(int n, int m)
{
denom=n;
den=m;
a=(double)denom/(double)den; //比如这里构造函数里的a能被其他成员函数访问吗?为什么?
}
int operator<(rational r) const;
int operator<=(rational r) const;
int operator==(rational r) const;
int operator!=(rational r) const;
void display();
};
int rational::operator<(rational r) const
{
if(a<((double)r.denom/(double)r.den)) //这里是引用构造函数里的a
return 1;
else
return 0;
}

解决方案

C++的访问权限是针对类型,不是对象。与是否在构造函数中初始化无关。

如下例,foo::print可以访问f 的私有函数,因为是同一class. 换局话说,方法是基于同一类对象的抽象,而不是从属于对象实例的。

#include

class foo
{
private:
int value;

public:
void setValue(int _v)
{
value = _v;
}

void print( foo& f)
{
std::cout << f.value << std::endl;
}
};

int main()
{
foo obj1;
obj1.setValue( 100);

foo obj2;
obj2.setValue( 99);

obj2.print( obj1);

return 0;
}

时间: 2024-09-13 08:42:56

c++ 类和对象-【C++】写在构造函数里的变量能够被同一个类中其他成员访问吗?为什么?的相关文章

后台开发:核心技术与应用实践2.1 类与对象

第2章 面向对象的C++ 学习C++,一定要学会面向对象编程.首先讲下"面向对象"产生的历史原因,主要有以下两点. (1)计算机只会按照人所写的代码,一步一步地执行下去,最终得到结果.无论程序多么复杂,计算机总是能轻松应付.结构化编程,就是按照计算机的思维写出的代码,但是人看到这么复杂的逻辑,无法进行维护和扩展. (2)结构化设计是以功能为目标来构造应用系统,这种做法导致程序员设计程序时,不得不将客体所构成的现实世界映射到由功能模块组成的解空间中,这种转换过程,背离了人们观察和解决问题

c++-如果类中有多个同一个类的多个对象成员,如何初始化。

问题描述 如果类中有多个同一个类的多个对象成员,如何初始化. 如果类中有多个同一个类的多个对象成员,如何初始化. 类名:构造函数名(形参):对象1(参数表),对象2(参数表)... 解决方案 就是像你写的那样初始化,也可以写在构造函数里. 解决方案二: 就是通过构造函数 或者放到一个数组中循环初始化 解决方案三: 1.普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值.考虑一下效率的可以再构造函数的初始化列表中进行. 2.static 静态变量: static变量属于类所有,而不属于

Javascript学习6 - 类、对象、继承

原文:Javascript学习6 - 类.对象.继承     Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成的.     在Javascript中,可以把对象(object)定义为"属性的无序集合",每个属性存放一个原始值.对象或者函数.理解这一点非常重要. ECMAScript定义:对象由特性(attribute)构成,特性可以是原始值,可以是引用值,如果特性存放的是函数,它将被看作对

php的类和对象(翻译:midiguy)

对象 /**********************************************************翻译:midiguy 翻译错误之处还请各位指出E-Mail:midiguy@263.netQQ:5149927***********************************************************/ 面向对象程序设计的来源得自于人们看待电话.汽车这些物体的想法.很多程序设计者在讨论面向对象程序设计的时候喜欢用"包装"或者"

进一步深入Ruby中的类与对象概念_ruby专题

Ruby是纯面向对象的语言,所有项目似乎要Ruby中为一个对象.Ruby中的每个值是一个对象,即使是最原始的东西:字符串,数字甚至true和false.即使是一个类本身是一个对象,它是Class类的一个实例.本章将通过所有功能涉及到Ruby的面向对象. 类是用来指定对象的形式,它结合了数据表示和方法操纵这些数据,转换成一个整齐的包.在一个类的数据和方法,被称为类的成员.Ruby类的定义: 定义一个类,定义的数据类型的草图. 这实际上并不定义任何数据,但它定义的类名字的意思什么,即是什么类的对象将

浅析Objective-C Runtime 类与对象教程

Objective-C语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等. 这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码.对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行.这个运行时系统即Objc Runtime.Objc Runtime其实是一个Runtime库,它基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力. Runtime库主

初学Java入门--类与对象

初学|对象 4.2 类与对象 4.2.1 类 在面向对象的语言中,类是个很重要的概念.面向对象的方法把所有的处理对象进行归类.具有相同性质的对象归为一类.例如学校里有很多学生,每个学生都是一个对象,而"学生"则是一个类,它包含了所有在学校学习的人. 在Java语言里,对象是一组描述对象的属性和操作方法的集合,其中属性表明对象的状态,方法表明对象的行为.类是对象的定义.一个对象具有哪些属性和方法,由类来决定.从编程角度看,类是一种复合数据类型,它封装了一组变量和方法(函数). 声明一个类

c++问题-c++类和对象的一个小习题

问题描述 c++类和对象的一个小习题 定义一个类,求有两个双精度浮点数和三个双精度浮点数的最小值的成员函数,实现并测试.求完整代码 解决方案 第三章 类和对象 习题[3.23] 解决方案二: 定义一个类,求有两个双精度浮点数和三个双精度浮点数的最小值的成员函数,实现并测试.求完整代码 ----不好好学习

C++类对象的复制-拷贝构造函数

在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的,例如: int a = 10; int b =a; 自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如: #include <iostream>using namespace std;class Test{public: Test(int temp) { p1=temp; }protected: int p1;};void main(){ Test a(9