类的对象和类的指针的区别

惊呆了!Oracle 11g从入门到放弃的保姆级指南(新手必看) 本文为Oracle 11g数据库新手提供了一份详尽的入门指南。内容涵盖从安装配置、SQL*Plus工具使用、核心的SQL增删改查操作,到事务、索引等进阶概念的解析。文章旨在帮助初学者避开常见陷阱,快速掌握这一经典关系型数据库管理系统的基本操作与核心技能,实现从入门到上手。 阅读详情

如下程序: 

#include <iostream> 
#include <string> 
using namespace std; 

class Student 
{ 
public: 
static int number;  
string name; 

public: 
Student() 
{ 
} 

void set(string str) 
{ 
name = str; 
number++;    // 调用静态数据成员 
} 

void print()  // 态成员函数 print() 
{ 
std::cout < < name < <" : The number of the students is " < < number < < " numbers." < < std::endl; // 调用静态数据成员 
} 
}; 

int Student::number = 0;  // 静态数据成员初始化 

int main(int argc, char** argv) 
{ 

Student* s1; 
s1 = new Student(); 
s1->set("111"); 

Student s2; 
s2.set("222"); 

s1->print(); 
s2.print(); 

return 0; 
} 

对于类student ,定义了一个对象 和一个指针。

类的指针:他是一个内存地址值,他指向内存中存放的类对象(包括一些成员变量所赋的值).   
对象,他是利用类的构造函数在内存中分配一块内存(包括一些成员变量所赋的值).   
          在应用时:   
        1.引用成员:   对象用" . "操作符;   指针用"   ->   "操作符.   
        2.生命期:     若是成员变量,则是类的析构函数来释放空间;若是函数中的临时变量,则作用域是该函数体内.而指针,则需利用delete   在相应的地方释放分配的内存块.   
  注意:用new   ,一定要delete..

  类的对象:用的是内存栈,是个局部的临时变量.   
  类的指针:用的是内存堆,是个永久变量,除非你释放它.   
    
  当类是有虚函数的基类,Func是它的一个虚函数,则调用Func时:   
  类的对象:调用的是它自己的Func;   
  类的指针:调用的是分配给它空间时那种类的Func;  

对于一个类的对象和这个类的指针(用new运算符分配内存)在应用时有何区别   
  1.类和对象是两回事,对象是类的实例;   
  2.对象是在栈中分配的,使用new生成的对象是在堆中分配的;   
  3.要发挥虚函数的强大作用,必须使用指针来访问对象.  

指针可以实现多态,直接用对象不行 
执行定义对象,在栈空间 
new处的在堆

注意名字的类型.

一个是Student 
一个是Student*

Student是直接访问一个对象 
Student*是间接访问一个对象,因为通过了一个指针作媒介.

类型决定了你能做什么.

其实作用基本一样 都是为了调用类的成员变量 和成员函数用的 
当你希望明确使用这个类的时候,最好使用对象,如果你希望使用C++中的动态绑定,则最好使用指针或者引用 
指针和引用用起来更灵活,容易实现多态等 


1.在类的声明尚未完成的情况下,可以声明指向该类的指针,但是不可声明该类的对象... 

2.父类的指针可以指向子类的对象..

定义对象实例时,分配了内存。指针变量则未分配类对象所需内存

指针变量是间接访问,但可实现多态(通过父类指针可调用子类对象),并且没有调用构造函数。 
直接声明可直接访问,但不能实现多态,声明即调用了构造函数(已分配了内存)。 
至于那个效率高要看程序调用过程而定。

C++的精髓之一就是多态性,只有指针或者引用可以达到多态。对象不行

用指针: 
第一实现多态。 
第二,在函数调用,传指针参数。不管你的对象或结构参数多么庞大,你用指针,传过去的就是4个字节。如果用对象,参数传递占用的资源就太大了

SAP FB03凭证修改实战:巧用BAPI FI_DOCUMENT_CHANGE更新抬头与行项目 本文详细介绍了SAP FB03凭证修改的实战技巧,重点解析了BAPI FI_DOCUMENT_CHANGE的使用方法。通过该接口,用户可以在不冲销原凭证的情况下直接更新抬头文本(BKTXT)和行项目文本(SGTXT),确保凭证编号连续且符合审计要求。文章包含核心机制解析、完整实现步骤、错误处理方案以及高级应用场景,帮助开发者高效完成SAP财务凭证修改。 阅读详情

相关推荐

面向网络攻击行为可视化分析系统实现【WebSocket + 可视化】

本系统主要应用于网站运维管理,它解决了网站运维人员排查网络攻击行为复杂且繁琐等问题,提高了运维人员网络安全分析的效率和准确性。

oNew_Lifeo的博客 1621

C语言中“.”与“->”用法比较

C语言中“.”与“->”运算符的差别 下面以结构体为例,跟别使用两个运算符进行对比。 结论: 点“.”一般读作“的”,其前面是结构体。 ->读作“指向结构体的”,其前面一定是一个指向结构体的指针 例子 #include<stdio.h> struct s//备注1 { int x; }; int main() { struct s s={1},*p=&amp...

qq_43768296的博客 2920

Gamit 数据处理,相关的文件配置

一、处理前准备 1、在主文件夹内新建test项目文件,项目内新建brdc、igs和rinex三个文件夹,分别存放广播星历,精密星历几观测值文件,所用的命令分别为sh_get_nav、sh_get_orbits和sh_get_rinex (若文件为.Z,用gunzip命令解压,若仍为d,用命令sh_crx2rnx -f 命令解压为o文件) 2、进入test项目文件夹,链接tables,运行 sh_setup -yr 2015 -apr itrf08_com.apr 3、生成station.info文件。 将t

CodeDoraemon的博客 3375

->和.的区别

【代码】->和.的区别。

weixin_45487355的博客 533

电容式麦克风:从原理到实际电路波形解析

本文深入解析电容式麦克风的工作原理,从核心的振膜与背板结构、电荷锁定机制到场效应管放大器的作用。通过实物拆解与等效电路分析,阐明声音振动如何转换为电压信号,并指导如何用示波器实测波形,直观展现声电转换过程,适合电子爱好者和音频技术学习者。

Black的专栏 1080

【hadoop编译报错】(yarn install) on project hadoop-yarn-applications-catalog-webapp Failed to run task

ambari+bigtop自定义组件集成

TTBIGDATA的博客 1804

在C语言中 . 和 -> 的区别详解

(在这里吐槽一下我们学校)真是大一上学的C语言,大一下又学的Java,大二学数据结构的时候为什么又要用C语言了,向我这种写Java的基本是忘干净了,特别是指针那块。没办法,只能重新捡起来。第一个问题就是这个 . 和 -> 的作用稍微有一点搞不清楚,就详细学了一下,现在分享出来。总体来说,. 和 -> 都是用于访问结构体成员的操作符,但它们的使用场景不同。这个需要区分一下。

2301_79714460的博客 4619

个人顶级AI助手OpenClaw(Clawdbot) - 新手快速入门指南

本文详细介绍了个人顶级AI助手OpenClaw(Clawdbot) 的快速入门指南,包括安装部署和使用配置及注意事项

program哲学 5307

“.”和“->”的区别

在C语言中,结构体(struct)是一种用户自定义的数据类型,可以包含多个不同类型的数据成员。

qq_38550745的博客 5640

第10章《VTK自定义部件Widget》

是用于交互式操作 3D 场景的组件,例如移动对象、调整尺寸、创建标注等。VTK 提供了一些内置的 Widget,如。,用户可以点击鼠标,在 3D 场景中放置一个点。负责绘制一个点,并控制其颜色、大小等。,可用于 3D 标注、对象拾取等应用!等,但在某些应用中,我们需要。这样,我们就创建了一个。

yumeiguo的博客 523

下采样优化实战:用ADown显著提升YOLOv11的多尺度特征保持能力

ADown 以“可编程梯度信息+多分支特征融合”打破了传统下采样的性能壁垒,为 YOLOv11 带来了多尺度特征的精准传递能力。从原理到代码集成,本教程已为你铺就了一条“小目标检测精度跃升”的实战路径。现在就动手尝试吧——当你看到模型对极小目标也能精准识别,且特征图细节完整时,你会明白这份技术探索的价值。我很乐意在你实践过程中帮你解决任何问题,让我们一起推动目标检测在下采样领域的边界。

FJN110的博客 422

C语言中关于“.”与“->”使用的区别

一般情况下用“.”,只需要声明一个结构体。格式是,结构体类型名+结构体名。然后用结构体名加“.”加域名就可以引用域 了。因为自动分配了结构体的内存。如同 int a;一样。 而用“->”,则要声明一个结构体的指针,还要手动开辟一个该结构体的内存,然后把返回的指针给声明的结构体指针,才能用“->”正确引用。否则内存中只分配了指针的内存,没有分配结构体的内存,导致想要的结构体实际上是不存在。这时候用“->”引用自然出错了,因为没有结构体,自然没有结构体的域了. 上图为列子,若.

p414897821的博客 874

基于STM32设计的智能水产养殖系统(华为云IOT)(152)

当前设计的智能水产养殖系统主控芯片采用STM32F103RCT6,可以实现对水位、水温、水混浊度和PH值等参数的监测和控制,并且支持定时投喂功能。通过连接华为云物联网平台,将传感器数据上传到服务器,并通过Qt设计的Android手机APP来获取设备上传的数据,从而实现对养殖环境的远程监测和控制。

8828

C++类的对象和类的指针的区别、指针和引用的区别

转自:https://blog.youkuaiyun.com/liulina603/article/details/47290963 #include <iostream> #include <string> using namespace std; class Student { public: static int number; string na...

martinkeith的博客 4347

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

类对象和类指针区别

浅谈类对象和类指针 本文转自。。。 Student a; s.setName(“A”); //Studeng *b = new Student(); Student *b; b = new Student(); b->setName(“B”); 分析: 定义类对象基本格式是:Student a;在定义之后就已经为a这个对象分配了内存,且为内存栈; 定义类指针基本格式是:Student b = new Student();在定义b的时候并没有分配内存,只有执行new后才会分配内存,且为内存堆。 问题:

xt18971492243的博客 1435

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++类对象和类指针的区别

好奇这个,所以参考了一些帖子,写下心得。 一篇转载率较高的帖子:C++ 类对象和 指针的区别 大佬都不贴结果。。。。所以这里我给出代码和结果: #include<iostream> using namespace std; class Test{ public: int a; Test(){ a = 1; } }; int main...

Arcobaleno 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

c++类对象和类指针的区别

转载:https://www.cnblogs.com/yedushusheng/p/5524043.html 代码: 1 2 3 4 5 6 7 Student a; s.setName("A"); //Studeng *b = new Student(); ...

weixin_41516902的博客 419

类对象和类指针的区别

类对象和类指针的区别 对于类CTest 声明: 类对象CTest C1:利用类的构造函数在内存中分配一块内存,调用了构造函数 类指针CTest  *pC1:是一个内存地址值,指向内存中存放的类对象,没有调用构造函数 引用成员: 对象用"." 指针用"->" 对象生命期: 若是成员变量,则是类的析构函数来释放空

醉浪漫的博客 817

类里面对象和指针的区别

 关于指针和对象的区别困扰很多初学者,现在我就用一些直白的语言描述,来帮助大家越过这个坑,希望对大家有所帮助。 Student* s1; s1 = new Student(); s1-&gt;set("111"); Student s2; s2.set("222"); s1-&gt;print(); s2.print(); 对于类student ,定义了一个对象 和一个指针...

Thoms_的博客 6792

C++ 类的对象和类的指针的区别

#include #include using namespace std; class Student { public: static int number; string name; public: Student() { } void set(string str) { name = str; number++; // 调用静态数据成员 }

CNV_2305 1807

C++类的对象和类的指针的区别

C++类的对象和类的指针的区别

yttyffggh的博客 260
上一篇: 微软面试题:反转二叉树
下一篇: 指向继承类的基类指针解引用后,是否还具备多态性
Tim_WT
博客等级 码龄20年 2粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值