您现在的位置是:首页 >

已定义了两个整数变量A和B B b; A* pa=&b; 定义了一个A类型的指针pa ,指向类b的地址 指向对象b 的地址,不是指指向对象b吗?

火烧 2022-08-11 21:15:49 1086
B A* a= am 定义了一个A类型的指针 a ,指向类 的地址 指向对象 的地址,不是指指向对象 吗? B A* a= am 定义了一个A类型的指针 a ,指向类 的地址 指向对象 的地址,不是指

B b; A* pa=&b; 定义了一个A类型的指针pa ,指向类b的地址 指向对象b 的地址,不是指指向对象b吗?  

B b; A* pa=&b; 定义了一个A类型的指针pa ,指向类b的地址 指向对象b 的地址,不是指指向对象b吗?

地址指向,性质不会改变。
A* pa 这样的定义,那么pa就是一个A类的实例,除非强制转换,否则pa永远是“A类的实例”
举个栗子:
char c[]={3,3,3,3};
int* i = (int *)&c;
cout<<*i;
输出是一个int型整数,而不会是char。

基类指针指向派生类对象地址

基类指针指向派生类对象,如果基类声明的不是虚函数就调用基类的,如果基类中是虚函数并且在派生类中实现,就调用派生类的函数。

指向抽象类的指针能否指向其派生类对象?

可以的,这是多态性的体现,看看这个程序就明白了
#include<iostream>
using namespace std;
class Shape
{
public:
virtual float area() const =0;
virtual void shapeName() const =0;
};
class Triangle:public Shape
{
public:
Triangle(float e1=0,float e2=0,float e3=0):edge1(e1),edge2(e2),edge3(e3){}
bool isTriangle() const
{
if(((edge1+edge2)>edge3)&&((edge1+edge3)>edge2)&&((edge3+edge2)>edge1))
return true;
else
return false;
}
void shapeName() const
{
cout<<"Triangle:";
cout<<"edge1="<<edge1<<",edge2="<<edge2<<",edge3="<<edge3;
cout<<endl;
}
float area() const
{
float temp=(edge1+edge2+edge3)/2;
if(isTriangle())
return sqrt(temp*(temp-edge1)*(temp-edge2)*(temp-edge3));
else
{
cout<<"Not a Triangle!"<<endl;
return -1;
}
}
private:
float edge1,edge2,edge3;
};
class Square:public Shape
{
public:
Square(float e=0):edge(e){}
float area() const
{
return edge*edge;
}
void shapeName() const
{
cout<<"Square:";
cout<<"edge="<<edge;
cout<<endl;
}
private:
float edge;
};
class Circle:public Shape
{
public:
Circle(float r):radius(r){}
float area() const
{
return 2*3.14*radius*radius;
}
void shapeName() const
{
cout<<"Circle:";
cout<<"radius="<<radius;
cout<<endl;
}
private:
float radius;
};
int main()
{
Triangle t(3,4,5);
Square s(5);
Circle c(3);
Shape * shape;
shape=&t;
shape->shapeName();
cout<<"area="<<shape->area();
cout<<endl;
shape=&s;
shape->shapeName();
cout<<"area="<<shape->area();
cout<<endl;
shape=&c;
shape->shapeName();
cout<<"area="<<shape->area();
cout<<endl;
return 0;
}

对象与指向对象的指针区别?

这个对象应该就是C语言中的对象吧,但是具体的还是很难分清楚的

c++中定义了指向基类对象的指针,为什么可以将派生类对象的地址赋给他,类型匹配吗

指针指向的是一个地址,只要是地址都可以赋值给他。
调用这个指针其实等于将你所赋给他的地址开始,强制转换为这个指针的类型结构。
至于类型匹配,要看你有没有在派生类中添加新的变量,或者基类的所有成员有没有被派生类继承。

已定义了两个整数变量A和B B b; A* pa=&b; 定义了一个A类型的指针pa ,指向类b的地址 指向对象b 的地址,不是指指向对象b吗?

假定一个数据对象为int*类型,则指向该对象的指针类型为( )

答案是C。
简单而言,指向任一类型T的指针类型就是(T)*,T为简单的数据类型时可以简写为T*(函数类型或数组类型时语法略有不同)。
指向int*对象类型的指针类型是(int*)*,也就是int**,是int的二级指针类型。
====
[原创回答团]

<a,b>是指向量a,b的内积,还是指向量a,b的夹角啊?

你好,这个问题很好,一般人写向量的夹角,都写作:<a,b>,其实不是的
应该是一个括号,里面是a和b,a和b的上方有一个箭头状的小帽,估计不好写
所以都默认<a,b>是夹角,这在向量里是可以接受的
但实际上<a,b>表示内积更合适,这在泛函、数学分析里应用广泛
特别在矩量法里有应用
内积是比向量的数量积更宽泛的,内积不光指的向量的数量积,也包括函数的内积
只要满足内积定义的3个条件,都可以

什么叫指针指向了一个合法的对象

就是要指向一个相应的地址变量
比如:int *p;要指向一个int 变量的地址
char *p;要指向一个char 变量的地址

PHP中的$a=&$b,是a指向b的内容,还是b指向了a的内容.

本来$b这里放了个苹果 执行这句后 $a和$b同时指向这个苹果

俩个不同智能指针对象指向同一个地址可以吗

不是的。
比方:int *pi=new int;
此时,表达式在自由存储区分配创建一个整型对象,并返回该对象的地址,而这个地址初始化了指针pi。当你再次运行该表达式时,会再次分配一块存储区,pi就会被新的地址初始化。希望你能理解,祝好运!

  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码