小编Cha*_*son的帖子

异常处理是否需要面向对象的编程?

在我的编程经验的这一点上,我意识到我在今天使用的大多数语言(C++,.Net,Java等)中都有异常处理,至少与C相比,我已经准备好了.高级C课程,让我真正想到这些术语与我目前的范例相比.

在C语言中,程序员可以首先防止错误发生,这对任何习惯于异常处理的人来说都是相当艰巨的.我发现任何遇到异常处理的语言都是面向对象的.至少据我所知,第一个面向异常处理的面向对象语言是C++,它是C语言的演变.(如果我错了,请纠正我)

话虽如此,是否有一些关于允许异常处理的语言的面向对象性质,或者是因为面向对象语言真正开始成为常见事件而添加的异常处理?什么是C缺乏说,C++,在机器代码,使激活工作?

我发现这篇文章关于异常处理如何在幕后工作,但不确定该信息如何应用于我的问题(即,C缺乏通知,延续等?).提前致谢.

c c++ exception-handling

40
推荐指数
5
解决办法
2110
查看次数

如何为VB.NET中的List中的结构元素赋值?

我在列表中有一个用户定义的结构,我试图在结构列表中的单个元素中更改值.访问元素不是问题.但是,当我尝试更新该值时,编译器会抱怨:

"表达是一种价值,因此不能成为作业的目标"

例如:

Public Structure Person

    Dim first as String
    Dim last as String
    Dim age as Integer

End Structure
Run Code Online (Sandbox Code Playgroud)

_

Public Sub ListTest()

    Dim newPerson as Person

    Dim records as List (Of Person)
    records = new List (Of Person)

    person.first = "Yogi"
    person.last = "bear"
    person.age = 35

    records.Add(person)
    records(0).first = "Papa"  ' <<== Causes the error
End Sub
Run Code Online (Sandbox Code Playgroud)

vb.net data-structures

19
推荐指数
1
解决办法
3万
查看次数

什么是猎枪/巫毒编程?

在这个问题中看到了这个词.我想我有一个想法,但不确定这是一个本地化的术语,还是该术语的广泛传播意义.

Shotgun会暗示他可能(过度)使用比更简单,更优雅的解决方案更笨重或更笨重的工具或技术.还有伏都教?

terminology

19
推荐指数
1
解决办法
4256
查看次数

在VB.NET中初始化类中的共享成员的最佳方法是什么?

我正在互联网上查看是否有任何关于如何在仍然初始化实例变量的同时初始化类中的共享成员的好例子.我找到了一个可能适合答案的表达式:

Shared Sub New()
    'Declare shared members
End Sub
Run Code Online (Sandbox Code Playgroud)

但你也有标准

Sub New()
    'Declare instance members
End Sub
Run Code Online (Sandbox Code Playgroud)

每次从类创建对象时,如何在不重新初始化共享成员的情况下初始化实例和共享成员?

vb.net constructor shared

9
推荐指数
1
解决办法
5404
查看次数

c ++ #include样式差异

所以前几天,我正在查看一些旧的C++书籍,并注意到了一种创建我以前从未见过的C++类的方法.到目前为止,我所看到的一切都始终使用#include"header.h"并分别编译实现文件.我看到本书作者所做的实际上是在头文件末尾的实现中添加了一个include指令,并从编译中省略了.cpp文件.有人用过这种风格吗?

例如:我有main.cpp employee.h employee.cpp

//main.cpp
#include <iostream>
#include <stdio.h>
#include <string>
#include "employee.h"
void main()
{/*some code*/}  

//employee.h
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class employee
{
   public:
   //public members
   private:
   //private members
}
#endif

//employee.cpp
#include "employee.h"
#include <string>
//public member definitions
Run Code Online (Sandbox Code Playgroud)

我会像这样正常编译这个项目:

g++ main.cpp employee.cpp
Run Code Online (Sandbox Code Playgroud)

但在作者的例子是这样的

//main.cpp
#include <iostream>
#include <stdio.h>
#include <string>
#include "employee.h"
void main()
{/*some code*/}  

//employee.h
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class employee
{
   public:
   //public members
   private:
   //private members
}
#include "employee.cpp"  // <-- the line …
Run Code Online (Sandbox Code Playgroud)

c++ coding-style include

7
推荐指数
1
解决办法
2026
查看次数

对于任意精度,是否有普遍接受的GMP替代品?

在寻找BigInt库的过程中,我遇到了这篇文章: Microsoft Windows上的C或C++ BigInt库

接受的答案提到了GMP库,但其中一位评论者声称库不会非常优雅地出错,并且对生产代码不利.有没有人用这个库进行任何长期开发?有什么好的选择吗?提前致谢.

c++ bigint

7
推荐指数
2
解决办法
2096
查看次数

SQL INSERT没有指定列.怎么了?

正在寻找心爱的W3schools并找到了这个页面并且实际上学到了一些有趣的东西.我不知道你可以在不指定值的列的情况下调用insert命令.例如;

INSERT INTO table_name
 VALUES (value1, value2, value3,...)
Run Code Online (Sandbox Code Playgroud)

从我朦胧的记忆中拉出来,我似乎记得SQL教授提到你必须把字段视为没有任何特定的顺序(虽然在RDB方面,但它不能保证).

我的问题是,服务器如何知道哪些值被分配到哪些字段?*我会自己测试一下,但我不打算使用生产服务器来做我现在可以访问的所有内容.

如果这项技术具体,我正在研究PostgresSQL.这个特殊的语法怎么有用呢?

sql postgresql

7
推荐指数
2
解决办法
4373
查看次数

这种格式叫做什么?"/ o =第一个组织/ ou =第一个管理组/ cn =收件人/ cn =用户"

以下字符串的格式是针对Microsoft Exchange调用的?

/o=First Organization/ou=First Administrative Group/cn=Recipients/cn=user
Run Code Online (Sandbox Code Playgroud)

我已经看到这个使用LDAP,但现在看到它CDO 1.2.1并最终尝试将其转换为电子邮件地址,如user@domain.com.谢谢.

email exchange-server ldap cdo.message

6
推荐指数
1
解决办法
7396
查看次数

T-SQL标量函数中的错误处理

这个问题可以很容易地采取多种途径,因此我将首先尝试更具体的路径.在使用SQL Server 2005时,我正在尝试创建一个标量函数,它充当从varchar到int的'TryCast'.我遇到问题的地方是我在函数中添加一个TRY块;

CREATE FUNCTION u_TryCastInt
(
   @Value as VARCHAR(MAX)
)
RETURNS Int
AS
BEGIN
   DECLARE @Output AS Int

   BEGIN TRY
      SET @Output = CONVERT(Int, @Value)
   END TRY
   BEGIN CATCH
      SET @Output = 0
   END CATCH

   RETURN @Output
END
Run Code Online (Sandbox Code Playgroud)

事实证明这一陈述存在各种错误,包括"在函数中'开始尝试'中无效使用副作用或时间相关运算符"和"在'END TRY'中无效使用副作用或时间相关运算符'在一个功能中".我似乎无法找到在标量函数中使用try语句的任何示例,这让我想到,函数中的错误处理是否可行?

这里的目标是创建一个强大的Convert或Cast函数版本,以允许SELECT语句执行depsite转换错误.例如,采取以下措施;

    CREATE TABLE tblTest
    (
        f1 VARCHAR(50)
    )
    GO

    INSERT INTO tblTest(f1) VALUES('1')
    INSERT INTO tblTest(f1) VALUES('2')
    INSERT INTO tblTest(f1) VALUES('3')
    INSERT INTO tblTest(f1) VALUES('f')
    INSERT INTO tblTest(f1) VALUES('5')
    INSERT INTO tblTest(f1) VALUES('1.1')

    SELECT CONVERT(int,f1) AS f1_num FROM tblTest …
Run Code Online (Sandbox Code Playgroud)

error-handling sql-server-2005 function sql-server-2000 type-conversion

5
推荐指数
1
解决办法
1万
查看次数

封闭物体应该是公共的还是私人的?

我有点不清楚将一个类中的所有成员私有化并制作公共方法来处理突变的想法.原始类型不是问题,它是我不清楚的封装对象.使对象成员私有的好处是能够隐藏不适用于正在构建的类的上下文的方法.缺点是你必须提供公共方法来将参数传递给底层对象(更多方法,更多工作).另一方面,如果您希望为底层对象公开所有方法和属性,那么您是否只能将该对象公开? 以这种方式暴露物体的危险是什么?

例如,我发现暴露了向量或数组列表中的所有内容很有用.我能想到的唯一缺点是,公共成员可能会分配一种类型,而不是通过隐式转换(或某种影响).一个名义上的指定会减少问题的可能性吗?

只是旁注:我理解真正的封装意味着成员是私人的.

oop encapsulation class-design

5
推荐指数
1
解决办法
140
查看次数